﻿using System;
using System.Web;
using System.IO;
using System.Collections.Generic;
using INNOVACALL.Framework.Common.Models.MetaModels;

namespace INNOVACALL.Framework.Common.Models
{

	#region FormUseModes

	/// <summary>
	/// Type d'utilisation possible pour les formulaires, permet de n'avoir qu'une seule vue et une seule méthode pour Add et Edit
	/// </summary>
	public enum FormUseModes
	{
		Add = 0,
		Edit = 1
	}
	#endregion

	/// <summary>
	/// All model used by _Controllers_Base<T> must inherit this
	/// </summary>
	[Serializable]
	public abstract class _Models_Base
	{
		public string _ClientApplicationName { get; set; }
		public List<string> _SpecificCSS { get; set; }
		public List<string> _SpecificJS { get; set; }
		public List<string> _SpecificJqueryJS { get; set; }
		public List<string> _DynamicJqueryJS { get; set; }
		public List<string> _ExternalCSS { get; set; }
		/// <summary>
		/// Menus
		/// </summary>
		public List<LayoutMenuElement_MetaModel> _Menus { get; set; }
		public bool _DisplayMenus { get; set; }
		public Dictionary<enMeta, string> _Meta { get; set; }

		// Dans OP la propriété NameUser contient du code, il vaut mieux que la récupération du nom d'utilisateur se fasse dans le Controlleur.
		/// <summary>
		/// User login est le login de l'utilisateur connecté, ne pas confondre avec Username dans le formulaire d'identification
		/// </summary>
		public string _UserLogin { get; set; }
		public string _PageTitle { get; set; }
		public string _PageMessage { get; set; }

		public _Models_Base()
		{
			this._PageTitle = string.Empty;
			this._PageMessage = string.Empty;
			this._ClientApplicationName = string.Empty;
			this._SpecificCSS = new List<string>();
			this._SpecificJS = new List<string>();
			this._SpecificJqueryJS = new List<string>();
			this._DynamicJqueryJS = new List<string>();
			this._ExternalCSS = new List<string>();
			this._Menus = new List<LayoutMenuElement_MetaModel>();
			this._Meta = new Dictionary<enMeta,string>();
		}

		public _Models_Base(List<LayoutMenuElement_MetaModel> menus)
		{
			this._PageTitle = string.Empty;
			this._PageMessage = string.Empty;
			this._ClientApplicationName = string.Empty;
			this._SpecificCSS = new List<string>();
			this._SpecificJS = new List<string>();
			this._SpecificJqueryJS = new List<string>();
			this._DynamicJqueryJS = new List<string>();
			this._ExternalCSS = new List<string>();
			this._Menus = menus;
		}

	}
}
